#include <iostream>

#include <jsoncpp/json/json.h>

#include <string>

using namespace std;

int main()
{
  Json::Value root;
  root["num1"] = 20;
  root["num2"] = 10;
  root["op"] = '+';
  root["text"] = "hello world";

  Json::FastWriter fastw;              // 序列化对象
  std::string ret = fastw.write(root); // 进行序列化并用string接收

  std::cout << std::endl
            << ret << std::endl;

  Json::Value v;        // 用于接收反序列化后的万能对象
  Json::Reader reader;  // 反序列化对象
  reader.parse(ret, v); // 调用反序列化成员函数

  // 将反序列化后的成员采用内置类型一一进行提取 提取时需调用asXXX函数将其转化为对应的数据类型
  int x = v["num1"].asInt();
  int y = v["num2"].asInt();
  char op = v["op"].asInt();
  std::string str = v["text"].asString();

  std::cout << "x : " << x << std::endl;
  std::cout << "y : " << y << std::endl;
  std::cout << "op : " << op << std::endl;
  std::cout << "str : " << str << std::endl;

  return 0;
}

//////////////////////////////////

// int main()
// {
//   Json::Value root;
//   root["num1"] = 20;
//   root["num2"] = 10;
//   root["op"] = '+';
//   root["text"] = "hello world";

//   Json::FastWriter fastw;
//   std::string ret = fastw.write(root);

//   std::cout << std::endl;
//   std::cout << ret << std::endl;
//   std::cout << "-----------------" << std::endl;

//   Json::StyledWriter stylew;
//   ret = stylew.write(root);

//   std::cout << ret << std::endl;

//   return 0;
// }
